Статья добавлена: 2013-03-15 09:25:26
Автор: Сергей

Установка proftpd Ubuntu


На данную тему очень много разных статей но как то толи они корявые толи я не далекий и мне приходилысь собирать информацию по кусочкам. В результате я решил написать то что стоит у меня из всего выше предложенного в интернете.
Установка proftptd:
  • sudo apt-get install proftpd

Открыть файл /etc/shells:
  • sudo vim /etc/shells

Добавить в него строку: /bin/false
  • /bin/false

Создать в /HOME каталоге папку FTP:
  • sudo mkdir /home/FTP

Создать пользователя с именем ftp(вместо parol нужно ввести пароль):
  • sudo useradd ftp -p parol -d /home/FTP -s /bin/false

В папке FTP создать две вложенные папки:
  • sudo mkdir /home/FTP/Public
    sudo mkdir /home/FTP/Share

Присвоить нужные права созданным папкам:
  • chmod 755 /home/FTP/
    chmod 755 /home/FTP/Public
    chmod 777 /home/FTP/Share

Переименовать имеющийся конфигурационный файл proftpd.conf и создать новый:
  • sudo mv /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.old
    sudo vim /etc/proftpd/proftpd.conf

добавить в него следующие строки:
отключаю протокол
  • UseIPv6 off
    AllowOverwrite on
    AuthAliasOnly on


# Здесь присваивается alias пользователю (в качестве примера присвоено имя ftp)
  • UserAlias ftp ServerName "server"
    ServerType standalone
    DeferWelcome on
    MultilineRFC2228 on
    DefaultServer on
    ShowSymlinks off
    TimeoutNoTransfer 600
    TimeoutStalled 100
    TimeoutIdle 2200
    DisplayChdir .message
    ListOptions "-l"

    RequireValidShell off
    TimeoutLogin 20

    RootLogin off
пути для логов
  • ExtendedLog /var/log/ftp.log
    TransferLog /var/log/xferlog
    SystemLog /var/log/syslog.log


    #DenyFilter *.*/

Я не использую файл /etc/ftpusers (здесь вводим имена пользователей, для ограничения их доступа)
  • UseFtpUsers off # Allow to restart a download AllowStoreRestart on
Стандартный порт для фтп 21, для повышения безопасности можно выбрать другой (произвольный):
  • Port 21

Повышение безопасности
  • MaxInstances 8

пользователь и группа:
  • User nobody
    Group nogroup

Umask 022 ограничение на создание файлов и папок
  • Umask 022 022

    PersistentPasswd off

  • Придел количества клиентов,хостов,доступных подключений:
    MaxClients 8 "Достигнут предел на количество клиентов"
    MaxClientsPerHost 8 "Достигнут предел на количество клиентов с Вашего хоста"
    MaxClientsPerUser 8 "Достигнут предел на количество подключений (%m)"
    MaxHostsPerUser 8 "Больше нельзя"

Вывод приветствия после успешного входа
  • AccessGrantMsg "Hellow piple!!!"

Идентификация
  • ServerIdent on "TEST_WORK"

Делаем /home/FTP-shared папку домашней
  • DefaultRoot /home/FTP

Запрещаем выходить пользователям за пределы домашней папки (строго рекомендуется)
  • DefaultRoot ~

Максимальное количество попыток входа после которых будет применен таймаут
  • MaxLoginAttempts 5

А вот сам пример моего рабочего конфига
  • #VALID LOGINS
    < Anonymous ~ftp>
    < Limit LOGIN>
    AllowUser userftp
    DenyALL
    < /Limit>
    < Directory /home/FTP-shared>
    Umask 022 022
    AllowOverwrite off
    < Limit MKD STOR DELE XMKD RNRF RNTO RMD XRMD>
    DenyAll
    < /Limit>
    < /Directory>
    < Directory /home/FTP-shared/public/*>
    Umask 022 022
    AllowOverwrite off
    < Limit MKD STOR DELE XMKD RNEF RNTO RMD XRMD>
    DenyAll
    < /Limit>
    < /Directory>
    < Directory> /home/FTP-shared/upload/>
    Umask 022 022
    AllowOverwrite on
    < Limit READ RMD DELE>
    DenyAll
    < /Limit>
    < Limit STOR CWD MKD>
    AllowAll
    < /Limit>
    < /Directory>
    < /Anonymous>

Вот пример анонимного доступа:

  • < Anonymous /папка/для/доступа>
        User userftp
        Group nogroup
        UserAlias anonymous userftp
       MaxClients 8
       DisplayChdir .message

     < Directory *>
       < Limit WRITE>
       DenyAll
        < /Limit>
     < /Directory>
    < /Anonymous>

Иногда требуется проверить скорсть интернета с ftp ресурса при этом не записывать файл на диск. Нам поможет в этом команда:
  • wget -O /dev/null путь к удаленному ресурсу.
Также иногда нужно в реальном времени посмотреть скорость на интерфейсе это можно сделать:
  • ifstat -b -i eth0
Если мы измеряем скорость (кбит/с) И если нам интересен обьем передаваемой информации через интерфейс то мы упускаем -b